package org.apli.haiam.admin.jsf.converter;

import java.util.ResourceBundle;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import org.apli.haiam.ejb.entidades.AdmRol;
import org.apli.jsf.converter.JsfConverterBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Clase Converter para la entidad DmpRol.
 * <p>
 * <H6>Soporte:HAIAM
 * <I>david_s_1086@hotmail.com,david.carranza@haiam.gob.ec</I></H6>
 *
 * @author david Carranza
 * @version 1.0 30/07/2014
 */
@FacesConverter(value = "JsfConverterRol", forClass = AdmRol.class)
public class JsfConverterRol extends JsfConverterBean implements Converter {

    private static final Logger log = LoggerFactory.getLogger(JsfConverterRol.class);

    /**
     * Convierte un String a Objeto Java.
     *
     * @param context el contexto de aplicación
     * @param component el componente asociado
     * @param value el valor de tipo String
     * @return el objeto Java
     */
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value == null) {
            return null;
        }
        try {
            return admin.buscar(AdmRol.class, new Short(value));
        } catch (Exception e) {
            log.error("getAsObject(...) {}", e.toString());
        }
        return null;
    }

    /**
     * Convierte un Objeto java a String.
     *
     * @param context el contexto de aplicación
     * @param component el componente asociado
     * @param value el objeto Java
     * @return el String
     */
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value == null) {
            return null;
        } else if (value.equals("") || value.equals("Seleccione...")) {
            return null;
        } else {
            if (value instanceof AdmRol) {
                return "" + ((AdmRol) value).getIdRol();
            } else {
                log.error("getAsString(...) Objeto no es del tipo adecuado ({})", value);
                throw new IllegalArgumentException("object: " + value + " es de tipo: " + value.getClass().getName() + "");
            }
        }
    }

    @Override
    protected ResourceBundle getProperties() {
        return ResourceBundle.getBundle("aplicacion");
    }
}
